package cl.portal.escolares.action;

import java.util.HashMap;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import cl.portal.escolares.DAO.DAOAlumno;
import cl.portal.escolares.DAO.DAOFurgon;
import cl.portal.escolares.DAO.DAOUsuario;
import cl.portal.escolares.domain.Furgon;
import cl.portal.escolares.domain.Usuario;

import com.opensymphony.xwork2.ActionSupport;

public class UsuarioEditAction extends ActionSupport {

	private Usuario usuario;
	private Furgon furgon;
	private List<Furgon> furgones;
	private HashMap<Long, Long> cuposMap;
	private static final long serialVersionUID = 1L;
	private static Log _log = LogFactory.getLog(UsuarioEditAction.class);
	private String okMessage = "";
	private String errorMessage = "";
	public String execute() throws Exception {

		try {
			cuposMap = new HashMap<Long, Long>();
			usuario = DAOUsuario.update(usuario);
			setFurgones(DAOFurgon.list(null, null, true));
			for (Furgon f : furgones) {
				Integer cantidad = DAOAlumno.list(null, null, f.getFurgonId(),
						null, null, null, null, null, true).size();
				cuposMap.put(f.getFurgonId(),
						(f.getCapacidad() - cantidad.longValue()));
			}
			furgon = new Furgon();
			if (usuario != null) {
				setOkMessage("Datos Actualizados Satisfactoriamente.");
				setErrorMessage("");
				return "success";
			} else {
				setErrorMessage("Se ha producido un error inesperado.");
				addActionError(getText("error.login"));
				addActionError(getText("error.login"));
				return "error";
			}
		} catch (Exception e) {
			System.out.println("Ex:" + e);
			setOkMessage("");
			setErrorMessage("Se ha producido un error inesperado.");
			addActionError(getText("error.login"));
			return "error";
		}

	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public List<Furgon> getFurgones() {
		return furgones;
	}

	public void setFurgones(List<Furgon> furgones) {
		this.furgones = furgones;
	}

	public Furgon getFurgon() {
		return furgon;
	}

	public void setFurgon(Furgon furgon) {
		this.furgon = furgon;
	}

	public HashMap<Long, Long> getCuposMap() {
		return cuposMap;
	}

	public void setCuposMap(HashMap<Long, Long> cuposMap) {
		this.cuposMap = cuposMap;
	}

	public String getOkMessage() {
		return okMessage;
	}

	public void setOkMessage(String okMessage) {
		this.okMessage = okMessage;
	}

	public String getErrorMessage() {
		return errorMessage;
	}

	public void setErrorMessage(String errorMessage) {
		this.errorMessage = errorMessage;
	}

}
